启动docker

# docker run centos:6.7 /bin/echo "Hello world"

结果:

Hello world

说明:

  • docker run 运行一个容器
  • centos:6.7 指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像
  • /bin/echo “Hello world” 在启动的容器里执行的命令

运行交互式的容器

# docker run -i -t centos:6.7 /bin/bash

结果:

[root@95f68434a3b2 /]#

说明:

  • -t 在新容器内指定一个伪终端或终端
  • -i 允许你对容器内的标准输入 (STDIN) 进行交互

启动容器

后台启动

# docker run -d centos:6.7 /bin/sh -c "while true; do echo hello world; sleep 1; done"

结果:

4767f1d1c05be0967e68a61418a40a1c538dc4b7c362b71aafb8c79dcbffc4c3

这个长字符串叫做容器ID,对每个容器来说都是唯一的

查看后台运行的容器

# docker ps

显示:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
4767f1d1c05b centos:6.7 "/bin/sh -c 'while t…" 10 seconds ago Up 9 seconds compassionate_perlman

说明:

  • CONTAINER ID:容器ID
  • NAMES:自动分配的容器名称

查看容器内的输出

# docker logs 4767f1d1c05b

显示:

hello world
hello world
...

说明:
CONTAINER ID和NAMES都可以生效

停止容器

# docker stop 4767f1d1c05b

再次用docker ps查看时发现已经停止了

docker容器

运行一个web应用

拉取镜像

# docker pull training/webapp

启动web应用

# docker run -d -P training/webapp python app.py

参数说明:

  • -d:让容器在后台运行。

  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

查看应用

#docker ps

显示:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
e8052c72934f training/webapp "python app.py" 8 seconds ago Up 6 seconds 0.0.0.0:32768->5000/tcp fervent_hoover

PORTS列的0.0.0.0:32768->5000/tcp表示docker开放了5000端口映射到主机32768端口

通过 http://localhost:32768 即可打开页面

设置端口

# docker run -d -p 5000:5000 training/webapp python app.py

则可以吧docker的5000端口映射到主机的5000端口

查看端口映射

# docker port 9602135d4352
```
则显示:
``` bash
5000/tcp -> 0.0.0.0:5000

查看日志

# docker logs -f 9602135d4352
  • -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

移除容器

# docker rm 9602135d4352

删除容器时,容器必须是停止状态